const { Controller } = require("egg");

/**
 * @Controller 用户管理
 */
class UserController extends Controller {
    /**
     * @jwt
     * @summary 创建用户
     * @description 创建一个后端管理系统用户
     * @router post /users
     * @request body CreateUserRequest *body
     * @response 201 BaseResponse 创建成功
     */
    async create() {
        // 校验参数合法性
        this.ctx.validate(this.ctx.rule.CreateUserRequest);
        // 创建用户
        await this.service.user.add(this.ctx.request.body);
        // 返回响应
        this.ctx.helper.send(201);
    }

    /**
     * @jwt
     * @summary 用户列表
     * @description 获取用户列表
     * @router get /users
     * @response 200 BaseResponse 请求成功
     */
    async index() {
        // 读取数据
        const res = await this.service.user.readList();
        // 返回响应
        this.ctx.helper.send(200, res);
    }

    /**
     * @jwt
     * @summary 修改用户信息
     * @description 根据用户id，修改用户的信息
     * @router put /users/:id
     * @request body UpdateUserRequest *body
     * @response 204 BaseResponse 修改成功
     */
    async update() {
        // 获取路径参数
        const { id } = this.ctx.params;
        // 校验参数
        this.ctx.validate(this.ctx.rule.UpdateUserRequest);
        // 修改用户
        await this.service.user.update(id, this.ctx.request.body);
        // 返回响应
        this.ctx.helper.send(200);
    }
}

module.exports = UserController;
